Bug 655122: Detect OSX version for handling version-dependent special
authorJohn Ralls <jralls@ceridwen.us>
Sat, 13 Aug 2011 22:29:11 +0000 (15:29 -0700)
committerJohn Ralls <jralls@ceridwen.us>
Sat, 13 Aug 2011 22:29:11 +0000 (15:29 -0700)
cases (the one at hand is window resizing, which is handled differently
on OSX 10.7 from earlier versions).

gdk/quartz/gdkglobals-quartz.c
gdk/quartz/gdkquartz.h

index 6dd43dc44b4c1dd9cc28dd7c2a24747d7671c691..edfd58736aa4cb0de811032e7b1f90b6c7ac9e80 100644 (file)
 #include "config.h"
 #include "gdktypes.h"
 #include "gdkprivate.h"
+#include "gdkquartz.h"
 
 GdkDisplay *_gdk_display = NULL;
 GdkScreen *_gdk_screen = NULL;
 GdkWindow *_gdk_root = NULL;
+
+GdkOSXVersion
+gdk_quartz_osx_version (void)
+{
+  gint minor;
+  OSErr err = Gestalt(gestaltSystemVersionMinor, &minor);
+  g_return_val_if_fail(err == noErr, GDK_OSX_UNSUPPORTED);
+
+  if (minor < GDK_OSX_MIN)
+      return GDK_OSX_UNSUPPORTED;
+  else if (minor > GDK_OSX_CURRENT)
+      return GDK_OSX_NEW;
+  else
+      return minor;
+
+}
index ea00837393ecba85e3099a656528d7a92e3f3936..d85c3e5047e8f0fe765783d1e94112ca6c22fd84 100644 (file)
@@ -1,3 +1,4 @@
+
 /* gdkquartz.h
  *
  * Copyright (C) 2005-2007 Imendio AB
@@ -41,6 +42,20 @@ typedef unsigned int NSUInteger;
 typedef float CGFloat;
 #endif
 
+typedef enum
+{
+  GDK_OSX_UNSUPPORTED = 0,
+  GDK_OSX_MIN = 4,
+  GDK_OSX_TIGER = 4,
+  GDK_OSX_LEOPARD = 5,
+  GDK_OSX_SNOW_LEOPARD = 6,
+  GDK_OSX_LION = 7,
+  GDK_OSX_CURRENT = 7,
+  GDK_OSX_NEW = 99
+} GdkOSXVersion;
+
+GdkOSXVersion gdk_quartz_osx_version (void);
+
 G_END_DECLS
 
 #define __GDKQUARTZ_H_INSIDE__